Most identifiersidentifier allowed by other programming languages are also acceptable to Scheme. The precise rules for forming identifiers vary among implementations of Scheme, but in all implementations a sequence of letters, digits, and ``extended alphabetic characters'' that begins with a character that cannot begin a number is an identifier. In addition, + and - (which can begin numbers) are identifiers. Here are some examples of identifiers:
Extended alphabetic characters may be used in identifiers exactly as if they were letters. The following are extended alphabetic characters:
See section for a formal syntax of identifiers.
Identifiers have several uses within Scheme programs:
The following identifiers are syntactic keywords, and should not be used as variables:
Some implementations allow all identifiers, including syntactic keywords, to be used as variables. This is a compatible extension to the language, but ambiguities in the language result when the restriction is relaxed, and the ways in which these ambiguities are resolved vary between implementations.
The characters ? and ! have no special properties—they are extended alphabetic characters. By convention, however, most predicate procedures (those that return boolean values) are named by identifiers that end in ?, and most data mutation procedures are named by identifiers that end in !.!?